#!/bin/bash
#
# freetv2vdr.sh can be used to translate a m3u playlist from freeboxtv to vdr format channels.conf
# file and associated iptvstream.sh for use in iptv vdr plugin
#
# (C) 2013 Benoit Héraud
#
# freetv2vdr.sh is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This package is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this package; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
# MA 02110-1301, USA.
VER="0.3"

# RECUPERATION DU CHEMIN DU SCRIPT 
BASE=$(cd $(dirname $0) && pwd) 

#SUFFIXE POUR LE FICHIER DE BACKUP
SUFFIX=$(date +%d-%m-%Y:%X)

source $BASE/CONFIG
source $BASE/functions

# VDR est il lancé ?
VDRPID=$(ps -C vdr -o pid=)
VDRSTATUS=0
if [ ! -z $VDRPID -a "$(ps $VDRPID | grep -v COMMAND)" ]
then 
  VDRSTATUS=1
  echo "[!]  Le serveur vdr est en cours d'éxécution"
  echo "[!]  Le serveur vdr doit être arreter avant de lancer ce script"
  echo "[!]  Dans le cas contraire la mise en place automatique des fichiers sera désactivée"
  echo "[?]  Sortir et arreter le serveur vdr O/n"
  
  while true 
  do
    read rep
    case "$rep" in
      o | O )
	  exit 0
	  ;;
      n | N )
	  echo "" ;
	  echo "[+] Mise en place auto des fichiers désactivée" ;
	  break ;;
      * )
	  continue ;;
    esac
  done
fi

# NETTOYAGE/CREATION DU REPERTOIRE DE TRAVAIL
if [ -d $WORKDIR ] 
then
  rm -Rf $WORKDIR
fi
mkdir -p $WORKDIR

# CREATION (SI ABSENT) du repertoire de backup
if [ ! -d $BACKUPDIR ]
then
  mkdir -p $BACKUPDIR
fi
# CREATION du fichier de backup
cp $VDRLIB/channels.conf $BACKUPDIR/channels.conf-$SUFFIX

#########################################################################################
#                          TRAITEMENT DES PARAMETRES DU SCRIPT                          #
#########################################################################################

if [ $# -eq 0 ]; then clear; echo "[+] Traitement de tous les canaux" ; echo "" ; fi    
while [ $# -gt 0 ]
do
    case "$1" in
     -h | --help ) usage ; exit 0;;
     -f | --file ) if [ -f "$2" ] ; then #  teste l'existence du fichier !
		      clear; echo "[+] Traitement du fichier $OPTARG" ; M3U=${2} ; shift
		   else
		      echo "$0 Erreur $OPTARG n'est pas un fichier" ; exit 1
		   fi ;;
     -m | --methode ) if [ "${2}" == "iptvstream" ] 
		      then 
			METHOD=1
		      elif [ "${2}" == "vlc2iptv" ] 
		      then  
			METHOD=2 } 
		      else
			echo "${2} pas implémenté, iptvstream par défaut"
			METHOD=1
		      fi ;;
     -v | --version ) echo "Version : $VER" ; exit 0 ;;		   
     --tnthd ) tnthd=1 ;;
     --hd ) hd=1 ;;
     --tnt ) tnt=1 ;;
     --basdeb ) basdeb=1 ;;
     --std ) std=1 ;;
     --auto ) auto=1 ;;
     --*) echo "$0: Erreur - paramètre $1 non reconnu" 1>&2; exit 1;;
     -*) echo "$0: Erreur - paramètre $1 non reconnu" 1>&2; exit 1;;
     *)  break;;
    esac
    shift
done

if [ -z ${M3U} ] ; then filter ; fi


if [ ${METHOD} -eq 1 ] ; then create_iptvstream ; fi
if [ ${METHOD} -eq 2 ] ; then create_vlc2iptv ; fi


if [ $VDRSTATUS -eq 0 ]
then
echo "[?] Mettre les fichiers en place o/n ?"
read rep

case "$rep" in
  o | O )
      if [ ${METHOD} -eq 1 ] ; then  putit_stream ; fi 
      if [ ${METHOD} -eq 2 ] ; then  putit_vlc2iptv ; fi 
      ;;
  n | N )
      echo "" ;
      echo "[+] Terminé" ;
      exit 0 ;;
  * )
      echo "" ;
      echo "[+] $rep n'est pas une option, fichiers non installés, terminé " ;
      exit 0 ;;
esac
fi
